// use std::path::PathBuf;
// use std::{env, fs};
//
// fn main() -> Result<(), Box<dyn std::error::Error>> {
//     env::set_var("RUST_BACKTRACE", "full");
//     let rs_out_dir = PathBuf::from("src/generated");
//     if !rs_out_dir.exists() {
//         println!("cargo:warning=Proto directory does not exist!");
//         fs::create_dir_all(&rs_out_dir)?;
//     }
//     tonic_build
//     ::configure()
//         .build_server(true)
//         .build_client(true)
//         .out_dir(rs_out_dir)
//         .compile_protos(&[
//             "asset/asset.proto-lib",
//             "common/base.proto-lib",
//             "common/decimal.proto-lib",
//         ], &["proto-lib"])
//         .unwrap();
//     Ok(())
//
//     // match tonic_build::configure()
//     //     .build_server(true)
//     //     .build_client(true)
//     //     .compile_protos(&[
//     //         "../../proto-lib/common/base.proto-lib",
//     //         "../../proto-lib/common/decimal.proto-lib",
//     //     ], &["../../proto-lib"])
//     // {
//     //     Ok(_) => {
//     //         println!("Successfully compiled proto-lib files");
//     //         Ok(())
//     //     }
//     //     Err(e) => {
//     //         println!("Failed to compile proto-lib files: {}", e);
//     //         Err(e.into())
//     //     }
//     // }
//
// }

use dotenv::dotenv;
use std::env;
// use std::path::PathBuf;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotenv().ok();
    env::set_var("RUST_BACKTRACE", "full");
    // for (key, value) in env::vars() {
    //     println!("cargo:warning={}={}", key, value);
    // }
    // PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("proto-lib");
    // println!("cargo:rerun-if-changed=proto-lib/");
    let s = env::var("OUT_DIR");
    println!("s:{:?}",s);
    // env!("OUT_DIR",s.unwrap());
    // let s2 = env!("OUT_DIR");
    // println!("s2:{:?}",s2);

    //     include!(concat!(env!("OUT_DIR"), "/common.rs"));
    // let out_dir = PathBuf::from(env::var("OUT_DIR33")?);
    // // let out_dir = PathBuf::from(env!("OUT_DIR"));
    // println!("cargo:warning=Out dir: {:?}", out_dir);

    // let custom_out_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
    //     .join("src")
    //     .join("generated");
    // println!("cargo:warning=Out dir: {:?}", custom_out_dir);
    // std::fs::create_dir_all(&custom_out_dir)?;
    tonic_build::configure()
        .build_server(true)
        .build_client(true)
        .type_attribute(".", "#[derive(::serde::Serialize)]")
        .file_descriptor_set_path("proto/descriptor.bin")
        // .out_dir(&custom_out_dir)
        .compile_protos(&["test.proto","asset/asset.proto", "common/base.proto"], &["proto"])
        .unwrap();
    Ok(())
}
